import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

years = np.arange(1950, 2026)

publication_counts = np.zeros_like(years, dtype=int)

publication_counts[years >= 2000] = np.linspace(100, 3500, len(years[years >= 2000])).astype(int)
publication_counts[years >= 2010] = np.linspace(2500, 3500, len(years[years >= 2010])).astype(int)
publication_counts[years >= 2020] = np.linspace(3500, 2200, len(years[years >= 2020])).astype(int)

df = pd.DataFrame({
    "年份": years,
    "作品出版数量": publication_counts
})

# 设置图形大小
fig, ax = plt.subplots(figsize=(12, 6))

# 绘制折线图并应用颜色映射
# 计算颜色映射的数值范围
norm = plt.Normalize(df["作品出版数量"].min(), df["作品出版数量"].max())
# 使用渐变色
cmap = plt.cm.get_cmap('YlOrRd')
# 绘制折线，逐点设置颜色
for i in range(len(df) - 1):
    ax.plot(df["年份"][i:i+2], df["作品出版数量"][i:i+2], color=cmap(norm(df["作品出版数量"][i])), linewidth=2)
# 创建颜色条
sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)
sm.set_array([])
cbar = fig.colorbar(sm, ax=ax, label="作品出版数量")

# 设置标题和坐标轴标签
ax.set_title("各年作品出版数量", fontsize=16)
ax.set_xlabel("年份", fontsize=12)
ax.set_ylabel("作品出版数量", fontsize=12)

# 优化 x 轴显示
plt.xticks(rotation=45)
# 设置 y 轴范围
ax.set_ylim(0, df["作品出版数量"].max() + 200)

# 调整布局
plt.tight_layout()

# 显示图形
plt.show()
